
VIC_LOG_LEVEL_NONE=0
VIC_LOG_LEVEL_FATAL=100
VIC_LOG_LEVEL_ERROR=200
VIC_LOG_LEVEL_WARN=300
VIC_LOG_LEVEL_INFO=400
VIC_LOG_LEVEL_DEBUG=500
VIC_LOG_LEVEL_TRACE=600

if [[ ! $_VIC_LOG_LEVEL ]] ; then
    _VIC_LOG_LEVEL=$VIC_LOG_LEVEL_ERROR
fi

_vic_log(){
    local log_msg=$1
    local log_level=$2
    if [[ $log_level -le $_VIC_LOG_LEVEL ]] ; then
        echo "$log_msg"
    fi
}

vic_log_get_level(){
    echo "$_VIC_LOG_LEVEL"
}

vic_log_set_level(){
    _VIC_LOG_LEVEL=$1
}

vic_log_fatal(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_FATAL"
}

vic_log_error(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_ERROR"
}

vic_log_warn(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_WARN"
}

vic_log_info(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_INFO"
}

vic_log_debug(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_DEBUG"
}

vic_log_trace(){
    local log_msg=$1
    _vic_log "$log_msg" "$VIC_LOG_LEVEL_TRACE"
}

